最后更新时间:2020年12月11日
量算功能包括地图空间距离量算和面积量算,既可以量算几何距离/面积,也可以量算实地距离/面积。此功能经常应用于外业数据采集等项目中,通常将计算出来的结果(长度或面积)展示到界面上,可以通过文本、地图标注等形式展示。
距离与面积计算有两种方式,一种为几何计算,通过com.zondy.mapgis.geometry.GeometryOperator类接口实现;另一种为实地量算,主要通过API程序包com.zondy.mapgis.geometry下的几何图形类接口实现,如通过GeoLine.calLength()方法实现距离量算,通过GeoPolygon.calArea()方法实现面积量算。
具体实现方法如下:
1 长度量算 Sample详情
长度量算功能,多用于量算地图上已有的线要素,或者量算用户绘制的图形。此功能由GeoLine类提供,所以实现功能之前,需获取到GeoLine或其子类对象,可直接创建,也可利用要素查询得到线要素从中获取,也可绘制线图形进而转化。
量算长度,可以量算几何长度,也可量算实地长度。利用不带参数的calLength方法默认以米为单位量算,如果地图单位不为米制单位,需传递地图空间参考系才能量算实地长度。
//将线图形对象转化为几何图形 Geometry geometry = Graphic.toGeometry(graphicPolylin); GeoVarLine geoVarLine = geometry instanceof GeoVarLine ? ((GeoVarLine) geometry) : null; //方法1-获取线段长度,计算两点之间的欧式几何距离 double length = geoVarLine.calLength(); double length = GeometryOperator.calculateLineLength(geometry); //方法2-量算线实地长度 //获取地图的空间参考系信息 SRefData refdata = mapView.getMap().getSRSInfo(); double length = geoVarLine.calLength(refdata);
2 面积量算 Sample详情
面积量算的功能,由GeoPolygon类提供,所以量算之前需获取到GeoPolygon对象,同样可以直接创建,也可从查询的Feature要素中获取,也可根据绘制的多边形转换而成。
与长度量算类似,同样支持量算几何面积和实地面积,地图单位不是米时,需传递地图的空间参考系才能量算正确的实地面积。
//将多边形图形转换为多边形几何对象 Geometry geometry = Graphic.toGeometry(graphicPolygon); GeoPolygon geoPolygon = geometry instanceof GeoPolygon ? ((GeoPolygon) geometry) : null;; //方法1-计算几何面积 double area = geoPolygon.calArea(); double area = GeometryOperator.calculateArea(geometry); //方法2-计算实地面积 //获取地图的空间参考系信息 SRefData refdata = mapView.getMap().getSRSInfo(); double area = geoPolygon.calArea(refdata);
实现效果如下图所示: